import { CryptoJS } from '@ohos/crypto-js'
export default class SignHelper {
  constructor() {}

  stripslashes(str) {
    return str.replace(/\\/g, '');
  }

  /**
   * 获取签名
   * @param {Object} params - 需要排序并生成签名的对象参数
   * @param {string} secretKey - 签名密钥（如果有的话）
   * @returns {string} - 小写MD5签名字符串
   */
  getSign(params, secretKey = "") {
    // 按照key的首字母排序对象
    const sortedParams = Object.keys(params)
      .sort()
      .reduce((obj, key) => {
        obj[key] = params[key];
        return obj;
      }, {});

    // 拼接成key=val&key=val形式的字符串
    let paramString = "";
    for (const key in sortedParams) {
      let value = sortedParams[key];

      if (value instanceof Array) {
        continue;
      } else if (typeof value === "object") {
        continue;
      } else if (key == "sign") {
        continue;
      }else if (typeof value === "undefined") {
        continue;
      }else if(value === true){
        value = 1
      }else if(value === false){
        value = 0
      }
      // console.log(value);
      paramString += `${key}=${value}&`;
    }
    // 去掉最后一个&
    paramString = paramString + secretKey;
    // console.log(paramString);
    // 加密并转为小写
    const sign = CryptoJS.MD5(paramString).toString(CryptoJS.enc.Hex).toLowerCase();
    return sign;
  }

  // 其他可能的方法，比如生成签名等...
}

// 示例使用
// const params = {
//     name: 'John Doe',
//     a:11,
//     emptyArray: [],
//     emptyObject: {},
//     items: ['apple', 'banana'],
//     details: { age: 30, secret: '' },
// };
// const sign_helper = new SignHelper();
// const signatureString = sign_helper.getSign(params,'kkk');
// console.log(signatureString); // 输出经过处理的签名字符串